class Solution {//leetcode
public:
    int minCostClimbingStairs(vector<int>& cost) {
        if(cost.size()<2){
            return min(cost[0],cost[1]);
        }
        //创建dp表并填充dp[0]与dp[1]
        vector<int> dp(cost.size()+1);
        dp[0]=cost[0];dp[1]=cost[1];
        //dp表内的状态表示，是来到当前阶梯的最小花费
        //因此特征方程为：dp[i]=cost[i]+min(dp[i-1],dp[i-2])
        int i=0;
        for(i=2;i<cost.size();i++){
            dp[i]=cost[i]+min(dp[i-1],dp[i-2]);
        }
        return min(dp[i-1],dp[i-2]);
    }
};